js调试技术 |
您所在的位置:网站首页 › try catch throw用法 › js调试技术 |
1、try-catch语句进本语法 js中的try-catch语句与java中的语法完全一致,基本语法如下: try{ //可能会导致错误的代码 }catch(error){ //错误发生时怎么处理 }代码实例:创建一个html文件,如test.html try { window.someNonexistentFunction(); } catch (error) { alert(error.message); //显示浏览器给出的消息 }在Chrome中运行后会弹出如下错误信息 ,这个信息也是console控制台给出的信息,所以对调试并没有实际意义,只是熟悉一下语法
2、错误类型 ECMA-262定义了如下7种类型: (1) Error,基类型,其他错误都继承该类型,也是浏览器抛出的错误 (2) EvalError,该错误类型在使用eval()函数发生异常时被抛出;如果没把eval()当成函数调用,就会抛出错误,例如 new eval();//抛出EvalError eval=foo;//抛出EvalError(3) RangeError,数值超出范围时抛出该错误,如数组超出下标范围等 (4) ReferenceError,找不到对象的情况下,会发生该错误,如使用未声明的对象,浏览器会抛出“object expected” (5) SyntaxError,把语法错误的js字符传入eval()函数时,就会导致此错误,如eval(“a++b”); (6) TypeError,在变量中保存意外类型时,或访问不存在的方法时都会导致该错误,归根结底还是由于在执行特定类型的操作时,变量的类型不符合要求所致,例如 var o = new 10;//抛出TypeError alert("name" in true);//抛出TypeError Function.prototype.toString.call("name");//抛出TypeError (7) URIError,在使用encodeURI()或decodeURI(),而格式不正确时,会导致该错误 要想知道错误类型,可以在catch语句中使用instanceof操作符 try { window.someFunction(); } catch (error) { if (error instanceof TypeError) { //处理类型错误 } else if (error instanceof ReferenceError) { //处理引用错误 } else { //处理其他类型错误 } }3、合理使用try-catch语句 当try-catch语句中发生错误时,浏览器会认为错误已经被处理了,因而不会记录或报告错误。 try-catch语句适合处理我们无法控制的错误。比如我们在使用一个大型JavaScript库中的函数时,该函数可能会抛出一些错误。由于我们无法修改源代码,所以可以将其放在try-catch语句中,处理那些意想不到的错误。 如果已经很清楚的知道自己的代码会发生错误就没必要使用try-catch语句了。 4、throw操作符抛出自定义错误 与try-catch语句相配的还有throw操作符,用于随时抛出自定义错误,抛出错误时,必须给throw操作符指定一个值,而值的类型没有要求,下列代码都是有效的 throw 123; throw "hello"; throw true; throw {name:"javascript"};当遇到throw操作符时,代码会立即停止执行,仅当有try-catch语句捕获到被抛出的值时,代码才会继续执行。 通过使用某种内置错误类型,可以模拟浏览器报出的错误,例如: throw new Error("Something bad happened!"); throw new SyntaxError("Incoming parameter of eval() can't be recognized!"); throw new RangeError("out of the max range!"); throw new TypeError("Type error!"); throw new EvalError("The eval() is not a variable!"); throw new URIError("the format of URI is not correct!"); throw new ReferenceError("the object is not found!");利用原型链可以通过继承Error来创建自定义错误类型。此时需要为新创建的错误类型指定name和message属性,例如 function CustomError(message){ this.name="CustomError"; this.message=message; } CustomError.prototype=new Error(); throw new customError("My message");5、阻止浏览器报告错误的默认行为 如果没有try-catch语句处理,当代码出现错误时,浏览器会报告默认的errro信息,包括三个方面信息:错误消息、错误所在的URL和行号,然而有时候这些错误信息并没有什么用,因为错误所在的行可能时外部的文件或内嵌的js代码,导致错误信息不精确,因此需要阻止浏览器的这种默认错误报告,代码如下: window.onerror=function (message,url,line){ alert(message); return false; };通过返回false,这个函数就相当于充当了整个文档中的try-catch语句,可以捕获所有五代码处理的运行时错误,只要能搞适当地使用try-catch语句,就不会有错误交给浏览器,也就不会触发error事件。 6、常见http错误请求状态码 400 错误请求 401 未授权,用户需要进行验证 403 禁止访问 404 未找到资源 408 请求超时 414 请求的URI过长 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |